\documentclass[border=5pt, multi, tikz]{standalone}
\usepackage{import}
\subimport{./layers}{init}

\def\XxScale{0.025}
\def\FcScale{0.002}

\begin{document}
\begin{tikzpicture}
    \tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7,->]

    % input
    \pic[shift={(0,0,0)}] at (0,0,0) {Box={name=in0,caption=Input,
    xlabel={3},ylabel=224,zlabel=224,fill=\InputColor,
    width ={3},height=224, depth=224,scale=\XxScale}};

    % kernel
    \pic[shift={(0,4,0)}] at (in0-west) {Box={name=kn1,
    xlabel={{3,}},ylabel=3  ,zlabel=3  ,fill=\InputColor,
    width =  3   ,height=3*5, depth=3*5,scale=\XxScale}};

    % relu
    \pic[shift={(3.2,0,0)}] at (in0-east) {RightBandedBox={name=rl1,caption=ReLU,
    xlabel={{64,64}},           zlabel=224,fill=\ConvColor,bandfill=\ConvReluColor,
    width ={ 16,16 },height=224, depth=224,scale=\XxScale}};

    \draw [connection] (in0-east) -- node [above] {Conv} (rl1-west);

    % kernel
    \pic[shift={(0,4,0)}] at (rl1-west) {Box={name=kn2,
    xlabel={{64,}},ylabel=3  ,zlabel=3  ,fill=\ConvColor,
    width =  16   ,height=3*5, depth=3*5,scale=\XxScale}};

    % kernel
    \pic[shift={(0,0,0)}] at (rl1-east) {Box={name=kn3,
    ylabel=2  ,zlabel=2  ,fill=\ConvColor,
    height=2*5, depth=2*5,width=0,scale=\XxScale}};

    % pool
    \pic[shift={(2.8,0,0)}] at (rl1-east) {Box={name=pl1,caption=Pool,
    xlabel={{64,}},ylabel=112,zlabel=112,fill=\PoolColor,
    width =  16   ,height=150, depth=150,scale=\XxScale}};

    \draw [connection] (rl1-east) -- node [above] {Max} (pl1-west);

    % kernel
    \pic[shift={(0,4,0)}] at (pl1-west) {Box={name=kn4,
    xlabel={{64,}},ylabel=3  ,zlabel=3  ,fill=\PoolColor,
    width =  16   ,height=3*5, depth=3*5,scale=\XxScale}};

    % relu
    \pic[shift={(2.5,0,0)}] at (pl1-east) {RightBandedBox={name=rl2,caption=ReLU,
    xlabel={{128,128}},           zlabel=112,fill=\ConvColor,bandfill=\ConvReluColor,
    width ={  32, 32 },height=150, depth=150,scale=\XxScale}};

    \draw [connection] (pl1-east) -- node [above] {Conv} (rl2-west);

    % kernel
    \pic[shift={(0,4,0)}] at (rl2-west) {Box={name=kn5,
    xlabel={{128,}},ylabel=3  ,zlabel=3  ,fill=\ConvColor,
    width =   32   ,height=3*5, depth=3*5,scale=\XxScale}};

    % kernel
    \pic[shift={(0,0,0)}] at (rl2-east) {Box={name=kn6,
    ylabel=2  ,zlabel=2  ,fill=\ConvColor,
    height=2*5, depth=2*5,width=0,scale=\XxScale}};

    % pool
    \pic[shift={(2.5,0,0)}] at (rl2-east) {Box={name=pl2,caption=Pool,
    xlabel={{128,}},ylabel= 56,zlabel= 56,fill=\PoolColor,
    width =   32   ,height=100, depth=100,scale=\XxScale}};

    \draw [connection] (rl2-east) -- node [above] {Max} (pl2-west);

    % kernel
    \pic[shift={(0,4,0)}] at (pl2-west) {Box={name=kn7,
    xlabel={{128,}},ylabel=3  ,zlabel=3  ,fill=\PoolColor,
    width =   32   ,height=3*5, depth=3*5,scale=\XxScale}};

    % relu
    \pic[shift={(2,0,0)}] at (pl2-east) {RightBandedBox={name=rl3,caption=ReLU,
    xlabel={{256,256,256}},           zlabel= 56,fill=\ConvColor,bandfill=\ConvReluColor,
    width ={  40, 40, 40 },height=100, depth=100,scale=\XxScale}};

    \draw [connection] (pl2-east) -- node [above] {Conv} (rl3-west);

    % kernel
    \pic[shift={(0,4,0)}] at (rl3-west) {RightBandedBox={name=kn8,
    xlabel={{256,256}},ylabel=3  ,zlabel=3  ,fill=\ConvColor,bandfill=\ConvColor,
    width ={  40, 40 },height=3*5, depth=3*5,scale=\XxScale}};

    % kernel
    \pic[shift={(0,0,0)}] at (rl3-east) {Box={name=kn9,
    ylabel=2  ,zlabel=2  ,fill=\ConvColor,
    height=2*5, depth=2*5,width=0,scale=\XxScale}};

    % pool
    \pic[shift={(2,0,0)}] at (rl3-east) {Box={name=pl3,caption=Pool,
    xlabel={{256,}},ylabel=28,zlabel=28,fill=\PoolColor,
    width =   40   ,height=70, depth=70,scale=\XxScale}};

    \draw [connection] (rl3-east) -- node [above] {Max} (pl3-west);

    % kernel
    \pic[shift={(0,4,0)}] at (pl3-west) {Box={name=kn10,
    xlabel={{256,}},ylabel=3  ,zlabel=3  ,fill=\PoolColor,
    width =   40   ,height=3*5, depth=3*5,scale=\XxScale}};

    % relu
    \pic[shift={(2,0,0)}] at (pl3-east) {RightBandedBox={name=rl4,caption=ReLU,
    xlabel={{512,512,512}},          zlabel=28,fill=\ConvColor,bandfill=\ConvReluColor,
    width ={  48, 48, 48 },height=70, depth=70,scale=\XxScale}};

    \draw [connection] (pl3-east) -- node [above] {Conv} (rl4-west);

    % kernel
    \pic[shift={(0,4,0)}] at (rl4-west) {RightBandedBox={name=kn11,
    xlabel={{512,512}},ylabel=3  ,zlabel=3  ,fill=\ConvColor,bandfill=\ConvColor,
    width ={  48, 48 },height=3*5, depth=3*5,scale=\XxScale}};

    % kernel
    \pic[shift={(0,0,0)}] at (rl4-east) {Box={name=kn12,
    ylabel=2  ,zlabel=2  ,fill=\ConvColor,
    height=2*5, depth=2*5,width=0,scale=\XxScale}};

    % pool
    \pic[shift={(2,0,0)}] at (rl4-east) {Box={name=pl4,caption=Pool,
    xlabel={{512,}},ylabel=14,zlabel=14,fill=\PoolColor,
    width =   48   ,height=50, depth=50,scale=\XxScale}};

    \draw [connection] (rl4-east) -- node [above] {Max} (pl4-west);

    % kernel
    \pic[shift={(0,4,0)}] at (pl4-west) {Box={name=kn13,
    xlabel={{256,}},ylabel=3  ,zlabel=3  ,fill=\PoolColor,
    width =   48   ,height=3*5, depth=3*5,scale=\XxScale}};

    % relu
    \pic[shift={(2,0,0)}] at (pl4-east) {RightBandedBox={name=rl5,caption=ReLU,
    xlabel={{512,512,512}},          zlabel=14,fill=\ConvColor,bandfill=\ConvReluColor,
    width ={  48, 48, 48 },height=50, depth=50,scale=\XxScale}};

    \draw [connection] (pl4-east) -- node [above] {Conv} (rl5-west);

    % kernel
    \pic[shift={(0,4,0)}] at (rl5-west) {RightBandedBox={name=kn14,
    xlabel={{512,512}},ylabel=3  ,zlabel=3  ,fill=\ConvColor,bandfill=\ConvColor,
    width ={  48, 48 },height=3*5, depth=3*5,scale=\XxScale}};

    % kernel
    \pic[shift={(0,0,0)}] at (rl5-east) {Box={name=kn15,
    ylabel=2  ,zlabel=2  ,fill=\ConvColor,
    height=2*5, depth=2*5,width=0,scale=\XxScale}};

    % pool
    \pic[shift={(1.5,0,0)}] at (rl5-east) {Box={name=pl5,caption=Pool,
    xlabel={{512,}},ylabel= 7,zlabel= 7,fill=\PoolColor,
    width =   48   ,height=30, depth=30,scale=\XxScale}};

    \draw [connection] (rl5-east) -- node [above] {Max} (pl5-west);

    % fc
    \pic[shift={(1.5,0,0)}] at (pl5-east) {Box={name=fc6,caption=ReLU,
    zlabel=4096,opacity=0.8,fill=\FcColor,
    height=4096,width=50,depth=0,scale=\FcScale}};

    \draw [connection] (pl5-east) -- node [above] {FC} (fc6-west);

    % fc
    \pic[shift={(1,0,0)}] at (fc6-east) {Box={name=fc7,caption=ReLU,
    zlabel=4096,opacity=0.8,fill=\FcColor,
    height=4096,width=50,depth=0,scale=\FcScale}};

    \draw [connection] (fc6-east) -- node [above] {FC} (fc7-west);

    % fc
    \pic[shift={(1,0,0)}] at (fc7-east) {Box={name=sm0,caption=SoftMax,
    zlabel=1000,opacity=0.8,fill=\SoftmaxColor,
    height=1000,width=50,depth=0,scale=\FcScale}};

    \draw [connection] (fc7-east) -- node [above] {FC} (sm0-west);

    %% Draw Dotted Edges
    %\draw[densely dashed]
    %(fc6-west)++(0, 1.5*.2, 1.5*.2) coordinate(a) -- (pl5-nearnortheast)
    %(fc6-west)++(0,-1.5*.2, 1.5*.2) coordinate(b) -- (pl5-nearsoutheast)
    %(fc6-west)++(0,-1.5*.2,-1.5*.2) coordinate(c) -- (pl5-farsoutheast)
    %(fc6-west)++(0, 1.5*.2,-1.5*.2) coordinate(d) -- (pl5-farnortheast)
    %(a)--(b)--(c)--(d);
\end{tikzpicture}
\end{document}

